package DAO;

import Factory.ConnectionFactory;
import Modelo.ClienteBean;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

public class ClienteDAO {
    
    private Connection conn;
    
    public ClienteDAO() throws Exception{
        this.conn = ConnectionFactory.getConnection();
    }
    
    public ArrayList<ClienteBean> consultar(String condicao) throws Exception{
        String sql;
        sql = "SELECT C.ID,";
        sql += "      C.NOME,";
        sql += "      C.ENDERECO,";
        sql += "      C.BAIRRO,";
        sql += "      C.ID_CIDADE,";
        sql += "      C.CEP,";
        sql += "      C.RGIE,";
        sql += "      C.DATANASC,";
        sql += "      C.TELEFONE,";
        sql += "      C.CELULAR,";
        sql += "      C.EMAIL";
        sql += " FROM CLIENTE C";
        if ((condicao != null) && (!(condicao.isEmpty()))) {
            sql += " WHERE " + condicao;
        }

        PreparedStatement stmt;
        ResultSet rs;
        ArrayList<ClienteBean> aCliente = new ArrayList<ClienteBean>();
        try {
            stmt = conn.prepareStatement(sql);
            rs = stmt.executeQuery();
            while (rs.next()) {
                ClienteBean cliente = new ClienteBean();
                cliente.setId(rs.getInt("ID"));
                cliente.setNome(rs.getString("NOME"));
                cliente.setEndereco(rs.getString("ENDERECO"));
                cliente.setBairro(rs.getString("BAIRRO"));

                CidadeDAO cid = new CidadeDAO();
                cliente.setCidade(cid.carregar("ID = " + rs.getString("ID_CIDADE")));
                
                cliente.setCep(rs.getString("CEP"));
                cliente.setRgie(rs.getString("RGIE"));
                cliente.setDatanasc(rs.getDate("DATANASC"));
                cliente.setTelefone(rs.getString("TELEFONE"));
                cliente.setCelular(rs.getString("CELULAR"));
                cliente.setEmail(rs.getString("EMAIL"));

                aCliente.add(cliente);
            }
            ConnectionFactory.closeConnection(conn, stmt, rs);
            return aCliente;
        } catch (SQLException ex) {
            return null;
        }        
    }
    
}
